package com.czd.support.util;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * Author: Jerry.hu
 * Create: Jerry.hu (2014/8/25 23:52)
 * Description: cookie 工具类
 */
public class CookieUtils {

	/**
	 *  * 设置cookie
	 *  * @param response
	 *  * @param name  cookie名字
	 *  * @param value cookie值
	 *  * @param maxAge cookie生命周期  以秒为单位
	 *  
	 */
	public static void addCookie(HttpServletResponse response, String name, String value, int maxAge) {
		Cookie cookie = new Cookie(name, value);
		cookie.setPath("/");
		if (maxAge > 0){
			cookie.setMaxAge(maxAge);
		};
		response.addCookie(cookie);
	}
	/**
	  * 根据名字获取cookie
	  * @param request
	  * @param name cookie名字
	  * @return
	  */
	public static Cookie getCookieByName(HttpServletRequest request,String name){
		Map<String,Cookie> cookieMap = ReadCookieMap(request);
		if(cookieMap.containsKey(name)) {
			Cookie cookie = cookieMap.get(name);
			return cookie;
			} else {
			return null;
		}
	}

	/**
	 * 根据名字获移除cookie
	 * @param request
	 * @param name cookie名字
	 * @return
	 */
	public static Cookie removeCookieByName(HttpServletRequest request,String name){
		Map<String,Cookie> cookieMap = ReadCookieMap(request);
		if(cookieMap.containsKey(name)) {
			Cookie cookie = cookieMap.get(name);
			cookie.setMaxAge(0);
			return cookie;
		} else {
			return null;
		}
	}
	/**
	  * 将cookie封装到Map里面
	  * @param request
	  * @return
	  */
	private static Map<String,Cookie> ReadCookieMap(HttpServletRequest request){
		Map<String,Cookie> cookieMap = new HashMap<>();
		Cookie[] cookies = request.getCookies();
		if(null!=cookies){
			for(Cookie cookie : cookies){
				cookieMap.put(cookie.getName(), cookie);
				}
			}
		return cookieMap;
	}
}
